package logicaPresentacion;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
import java.util.Map.Entry;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import logicaNegocio.Alumno;
import logicaNegocio.GestionAdministrador;
import logicaNegocio.Profesor;


public class VerBuscador extends JInternalFrame implements ActionListener
{

	/**
	 * 
	 */
	private static final long serialVersionUID = -3087158414788863404L;
	private JTextField txtUser;
    private JLabel lblUser;
    private JButton btnAceptar, btnCancelar;
    private boolean clave;
    private GestionAdministrador gAd;
    private Alumno a;
    private Profesor p;
    private String eleccion;
	public VerBuscador( GestionAdministrador gAd,String eleccion) 
	{
		this.gAd = gAd;
		this.eleccion = eleccion;
		
		Container contenedor = getContentPane();
	    contenedor.setLayout(new FlowLayout());
	 
	    txtUser = new JTextField(10);
	    lblUser = new JLabel("DNI: ");
	    txtUser.setToolTipText("Escriba el DNI");        
	    contenedor.add( Box.createVerticalStrut(50) );
	    contenedor.add(lblUser);
	    contenedor.add(txtUser);
	 
	    btnAceptar = new JButton("Aceptar");
	    btnAceptar.addActionListener(this);
	    getRootPane().setDefaultButton(btnAceptar);
	 
	    btnCancelar = new JButton("Cancelar");
	    btnCancelar.addActionListener(this);
	    contenedor.add(btnAceptar);
	    contenedor.add(btnCancelar);
	 
		this.setSize(200,200);
	       
	    setTitle("Buscador de usuarios");
	    setSize(400,150);           
	    setResizable(false);      
	    
	    setVisible(true);    
	 
	    }  
  public boolean identificarAlumno(String dni) 
  {  
	  Map <String, Alumno> alumnos = gAd.getAlumnos();
	  
		if(alumnos != null)
		{										
			java.util.Iterator<Entry<String, Alumno>> it = gAd.getAlumnos().entrySet().iterator();
			 
		    while (it.hasNext())
		    {
		    	@SuppressWarnings("rawtypes")
				Map.Entry e = (Map.Entry)it.next();
		        a = (Alumno)gAd.getAlumnos().get(e.getKey());

				if (a.getDni().equals(dni))
				{
					clave = true;		
				}
			}
		}
		return clave;
	}
  public boolean identificarProfesor(String dni) 
  {  
	  Map <String, Profesor> profesores = gAd.getProfesores();
	  
		if(profesores != null)
		{										
			java.util.Iterator<Entry<String, Profesor>> it = gAd.getProfesores().entrySet().iterator();
			 
		    while (it.hasNext())
		    {
		    	@SuppressWarnings("rawtypes")
				Map.Entry e = (Map.Entry)it.next();
		        p = (Profesor)gAd.getProfesores().get(e.getKey());

				if (p.getDni().equals(dni))
				{
					clave = true;		
				}
			}
		}
		return clave;
	}
	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource() instanceof JButton) 
		{
			JButton btnPulsado=(JButton)e.getSource();
			
			if(btnPulsado==btnAceptar)
			{
				if(eleccion.equals("Alumno"))
				{
					if (identificarAlumno(txtUser.getText()))
	                {
	                	dispose();
	                }
							
	                else
	                {
	                	JOptionPane.showMessageDialog(null, "El nombre no es valido");
	                    
	                }
				}
				if(eleccion.equals("Profesor"))
				{
					if (identificarProfesor(txtUser.getText()))
	                {
	                	dispose();
	                }
							
	                else
	                {
	                	JOptionPane.showMessageDialog(null, "El nombre no es valido");
	                    
	                }
				}
			}
			else
			{
				dispose();
			}
		}	
	}
	public boolean getValidacion()
	{
		return clave;
	}
	
	public Alumno getAlumno()
	{
		return a;
	}
	
	public String getProfesor()
	{
		return txtUser.getText();
	}
	public String getEleccion()
	{
		return eleccion;
	}
}